﻿
#include "myQtLib.h"
#include <iostream>
#include <chrono>
#include <thread>
#include <map>
#include <mutex>
#include "global.h"

////添加数据
//void insertData(std::map<double, double>& data)
//{
//	std::cout << globalVal << std::endl;
//	std::cout << &data << std::endl;
//	for (int i = 0; i < globalVal; i++)
//	{
//		std::unique_lock<std::mutex> lock(mutex);
//
//		data.insert({ i,i*i });
//		std::cout << "insert: "<< i << '\n';
//
//		lock.unlock();
//		cv.notify_one();
//		std::this_thread::sleep_for(std::chrono::seconds(1));
//	}
//}
// 
typedef void (*PushDataFunc)(double, double);
// 数据生成线程
void dataThread(PushDataFunc pushFunc)
{
	for (int i = 0; i < 1000; ++i) 
	{
		pushFunc(i, rand() % 100);
		std::cout << "dataThread" << i << '\n';
		std::this_thread::sleep_for(std::chrono::milliseconds(10));
	}
}

int main(int argc, char** argv)
{
	//共享数据
	//std::map<double, double> data;
	//将添加数据的操作放到另一个线程执行
	//std::thread t([&]{insertData(data); });
	//detach表示分离线程，不会阻塞等待线程函数执行完毕
	//t.detach();
	//主线程将被阻塞, 后面的代码不会执行直到QT窗口关闭
	std::thread t(dataThread, pushData);  // 启动数据线程‌:ml-citation{ref="7" data="citationList"}
	t.detach();

	startQtApplication(argc, argv);
	//pushData(1, 2);
	//std::thread t(dataThread, pushData);  // 启动数据线程‌:ml-citation{ref="7" data="citationList"}
	//t.detach();

	return 0;
}
